<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <table align="center">
        <tbody>
            <tr>
                <td valign="top">
                    <p>Abstract&nbsp;factory</p>
                </td>
                <td valign="top">
                    <p>You&nbsp;want&nbsp;to&nbsp;create&nbsp;objects&nbsp;of&nbsp;a&nbsp;selected&nbsp;family&nbsp;of&nbsp;classes&nbsp;but&nbsp;you&nbsp;don’t&nbsp;want&nbsp;the&nbsp;client&nbsp;to&nbsp;be&nbsp;affected&nbsp;by&nbsp;the&nbsp;choice.</p>
                </td>
            </tr>
            <tr>
                <td valign="top">
                    <p>Adapter</p>
                </td>
                <td valign="top">
                    <p>You&nbsp;want&nbsp;to&nbsp;convert&nbsp;one&nbsp;interface&nbsp;to&nbsp;another&nbsp;because&nbsp;they&nbsp;do&nbsp;not&nbsp;match&nbsp;and&nbsp;cannot&nbsp;be&nbsp;changed.</p>
                </td>
            </tr>
            <tr>
                <td valign="top">
                    <p>Bridge</p>
                </td>
                <td valign="top">
                    <p>You&nbsp;want&nbsp;to&nbsp;switch&nbsp;between&nbsp;different&nbsp;implementations&nbsp;at&nbsp;run&nbsp;time&nbsp;without&nbsp;affecting&nbsp;the&nbsp;client.</p>
                </td>
            </tr>
            <tr>
                <td valign="top">
                    <p>Builder</p>
                </td>
                <td valign="top">
                    <p>You&nbsp;want&nbsp;an&nbsp;abstraction&nbsp;of&nbsp;a&nbsp;process&nbsp;and&nbsp;a&nbsp;set&nbsp;of&nbsp;steps&nbsp;to&nbsp;build&nbsp;a&nbsp;product&nbsp;so&nbsp;that&nbsp;you&nbsp;can&nbsp;combine&nbsp;implementations&nbsp;of&nbsp;the&nbsp;two&nbsp;at&nbsp;run&nbsp;time&nbsp;to&nbsp;produce&nbsp;various&nbsp;categories&nbsp;of&nbsp;products&nbsp;using&nbsp;different&nbsp;processes.</p>
                </td>
            </tr>
            <tr>
                <td valign="top">
                    <p>Chain&nbsp;of&nbsp;responsibility</p>
                </td>
                <td valign="top">
                    <p>You&nbsp;want&nbsp;to&nbsp;pass&nbsp;a&nbsp;request&nbsp;along&nbsp;a&nbsp;reconfigurable&nbsp;chain&nbsp;of&nbsp;handlers&nbsp;until&nbsp;one&nbsp;that&nbsp;handles&nbsp;it.</p>
                </td>
            </tr>
            <tr>
                <td valign="top">
                    <p>Command</p>
                </td>
                <td valign="top">
                    <p>You&nbsp;want&nbsp;to&nbsp;encapsulate&nbsp;requests&nbsp;as&nbsp;(command)&nbsp;objects&nbsp;so&nbsp;that&nbsp;you&nbsp;can:&nbsp;(1)&nbsp;delegate&nbsp;the&nbsp;requests&nbsp;to&nbsp;the&nbsp;command&nbsp;objects,&nbsp;(2)&nbsp;queue&nbsp;the&nbsp;requests&nbsp;and&nbsp;execute&nbsp;them&nbsp;at&nbsp;a&nbsp;different&nbsp;time,&nbsp;(3)&nbsp;generate&nbsp;a&nbsp;plan&nbsp;of&nbsp;actions&nbsp;dynamically,&nbsp;and/or&nbsp;(4)&nbsp;stack&nbsp;the&nbsp;requests&nbsp;to&nbsp;support&nbsp;undo&nbsp;and&nbsp;redo.</p>
                </td>
            </tr>
            <tr>
                <td valign="top">
                    <p>Composite</p>
                </td>
                <td valign="top">
                    <p>You&nbsp;want&nbsp;to&nbsp;represent&nbsp;components&nbsp;with&nbsp;recursive&nbsp;part-whole&nbsp;relationships&nbsp;and&nbsp;allow&nbsp;the&nbsp;client&nbsp;to&nbsp;interact&nbsp;with&nbsp;components&nbsp;and&nbsp;composites&nbsp;uniformly.</p>
                </td>
            </tr>
            <tr>
                <td valign="top">
                    <p>Decorator</p>
                </td>
                <td valign="top">
                    <p>You&nbsp;want&nbsp;to&nbsp;dynamically&nbsp;add/remove&nbsp;functionality&nbsp;to/from&nbsp;objects.</p>
                </td>
            </tr>
            <tr>
                <td valign="top">
                    <p>Facade</p>
                </td>
                <td valign="top">
                    <p>You&nbsp;want&nbsp;to&nbsp;simplify&nbsp;a&nbsp;client's&nbsp;interface&nbsp;and&nbsp;interaction&nbsp;&nbsp;to&nbsp;a&nbsp;web&nbsp;of&nbsp;components.</p>
                </td>
            </tr>
            <tr>
                <td valign="top">
                    <p>Factory&nbsp;method</p>
                </td>
                <td valign="top">
                    <p>You&nbsp;want&nbsp;to&nbsp;create/use&nbsp;objects&nbsp;of&nbsp;a&nbsp;chosen&nbsp;class&nbsp;but&nbsp;you&nbsp;don't&nbsp;want&nbsp;to&nbsp;know,&nbsp;make,&nbsp;or&nbsp;be&nbsp;affected&nbsp;by&nbsp;the&nbsp;choice.</p>
                </td>
            </tr>
            <tr>
                <td valign="top">
                    <p>Flyweight</p>
                </td>
                <td valign="top">
                    <p>You&nbsp;want&nbsp;to&nbsp;save&nbsp;time&nbsp;and&nbsp;space&nbsp;incurred&nbsp;in&nbsp;the&nbsp;creation,&nbsp;initialization,&nbsp;and&nbsp;storage&nbsp;of&nbsp;many&nbsp;occurrences&nbsp;of&nbsp;an&nbsp;object.</p>
                </td>
            </tr>
            <tr>
                <td valign="top">
                    <p>Interpreter</p>
                </td>
                <td valign="top">
                    <p>You&nbsp;want&nbsp;dynamic&nbsp;modification&nbsp;of&nbsp;a&nbsp;portion&nbsp;of&nbsp;your&nbsp;program&nbsp;but&nbsp;you&nbsp;don't&nbsp;want&nbsp;to&nbsp;recompile&nbsp;the&nbsp;system.</p>
                </td>
            </tr>
            <tr>
                <td valign="top">
                    <p>Iterator</p>
                </td>
                <td valign="top">
                    <p>You&nbsp;want&nbsp;a&nbsp;traversal&nbsp;mechanism&nbsp;that&nbsp;hides&nbsp;the&nbsp;structure&nbsp;traversed.</p>
                </td>
            </tr>
            <tr>
                <td valign="top">
                    <p>Mediator</p>
                </td>
                <td valign="top">
                    <p>You&nbsp;want&nbsp;to&nbsp;replace&nbsp;m-m&nbsp;or&nbsp;component&nbsp;to&nbsp;component&nbsp;interaction&nbsp;with&nbsp;m-1&nbsp;or&nbsp;component&nbsp;to&nbsp;mediator&nbsp;interaction.</p>
                </td>
            </tr>
            <tr>
                <td valign="top">
                    <p>Memento</p>
                </td>
                <td valign="top">
                    <p>You&nbsp;want&nbsp;to&nbsp;store&nbsp;and&nbsp;restore&nbsp;the&nbsp;state&nbsp;of&nbsp;an&nbsp;object&nbsp;but&nbsp;you&nbsp;don't&nbsp;want&nbsp;to&nbsp;expose&nbsp;the&nbsp;internals&nbsp;of&nbsp;the&nbsp;state&nbsp;to&nbsp;a&nbsp;third&nbsp;party.</p>
                </td>
            </tr>
            <tr>
                <td valign="top">
                    <p>Observer</p>
                </td>
                <td valign="top">
                    <p>You&nbsp;want&nbsp;to&nbsp;decouple&nbsp;change&nbsp;and&nbsp;related&nbsp;responses&nbsp;so&nbsp;that&nbsp;you&nbsp;can&nbsp;add&nbsp;or&nbsp;remove&nbsp;such&nbsp;dependencies&nbsp;freely&nbsp;and&nbsp;dynamically.</p>
                </td>
            </tr>
            <tr>
                <td valign="top">
                    <p>Prototype</p>
                </td>
                <td valign="top">
                    <p>You&nbsp;want&nbsp;to:&nbsp;(1)&nbsp;reduce&nbsp;object&nbsp;creation&nbsp;and&nbsp;initialization&nbsp;costs,&nbsp;(2)&nbsp;reduce&nbsp;number&nbsp;of&nbsp;classes,&nbsp;or&nbsp;(3)&nbsp;use&nbsp;dynamically&nbsp;loaded&nbsp;classes.</p>
                </td>
            </tr>
            <tr>
                <td valign="top">
                    <p>Proxy</p>
                </td>
                <td valign="top">
                    <p>You&nbsp;want&nbsp;to:&nbsp;(1)&nbsp;hide&nbsp;the&nbsp;use&nbsp;of&nbsp;a&nbsp;remote&nbsp;object,&nbsp;(2)&nbsp;&nbsp;defer&nbsp;creation&nbsp;of&nbsp;an&nbsp;object&nbsp;until&nbsp;it&nbsp;is&nbsp;actually&nbsp;used,&nbsp;(3)&nbsp;control&nbsp;access&nbsp;to&nbsp;an&nbsp;object,&nbsp;or&nbsp;(4)&nbsp;keep&nbsp;track&nbsp;of&nbsp;references&nbsp;or&nbsp;update&nbsp;to&nbsp;an&nbsp;object.&nbsp;</p>
                </td>
            </tr>
            <tr>
                <td valign="top">
                    <p>Singleton</p>
                </td>
                <td valign="top">
                    <p>You&nbsp;want&nbsp;to&nbsp;create&nbsp;at&nbsp;most&nbsp;one&nbsp;or&nbsp;a&nbsp;limited&nbsp;number&nbsp;of&nbsp;globally&nbsp;accessible&nbsp;instances&nbsp;of&nbsp;a&nbsp;class.</p>
                </td>
            </tr>
            <tr>
                <td valign="top">
                    <p>State</p>
                </td>
                <td valign="top">
                    <p>You&nbsp;want&nbsp;a&nbsp;low&nbsp;complexity&nbsp;and&nbsp;easy&nbsp;to&nbsp;extend&nbsp;solution&nbsp;to&nbsp;implement&nbsp;a&nbsp;state&nbsp;machine.</p>
                </td>
            </tr>
            <tr>
                <td valign="top">
                    <p>Strategy</p>
                </td>
                <td valign="top">
                    <p>You&nbsp;want&nbsp;to&nbsp;let&nbsp;the&nbsp;client&nbsp;select&nbsp;an&nbsp;algorithm&nbsp;from&nbsp;available&nbsp;algorithms&nbsp;to&nbsp;accomplish&nbsp;a&nbsp;given&nbsp;task.</p>
                </td>
            </tr>
            <tr>
                <td valign="top">
                    <p>Template&nbsp;method</p>
                </td>
                <td valign="top">
                    <p>You&nbsp;want&nbsp;the&nbsp;steps&nbsp;of&nbsp;a&nbsp;computation&nbsp;to&nbsp;vary&nbsp;but&nbsp;you&nbsp;don't&nbsp;want&nbsp;to&nbsp;do&nbsp;so&nbsp;with&nbsp;conditional&nbsp;statements.</p>
                </td>
            </tr>
            <tr>
                <td valign="top">
                    <p>Visitor</p>
                </td>
                <td valign="top">
                    <p>You&nbsp;want&nbsp;to&nbsp;decouple&nbsp;certain&nbsp;functionality&nbsp;from&nbsp;a&nbsp;class&nbsp;structure&nbsp;so&nbsp;that&nbsp;it&nbsp;can&nbsp;be&nbsp;applied&nbsp;to&nbsp;other&nbsp;class&nbsp;structures&nbsp;as&nbsp;well.</p>
                </td>
            </tr>
        </tbody>
    </table>
</body>
</html>